package com.ljl.ssm.service;

import com.github.pagehelper.PageInfo;
import com.ljl.ssm.entity.Category;
import com.ljl.ssm.entity.Product;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author BaoZhou
 * @since 2019-07-07
 */
public interface IProductService extends IService<Product> {


    public PageInfo selectList(int pn, String keyword);


    public PageInfo selectListLike(int pn, String keyword);

    public PageInfo selectListbySize(int size, int keyword);
    /**
     * 增加一条数据
     *
     * @param product
     */
    void add(Product product);

    public PageInfo selectAll();
    /**
     * 通过id删除一条数据
     *
     * @param id
     */
    void delete(Integer id);

    /**
     * 更新一条数据
     *
     * @param product
     */
    void update(Product product);

    /**
     * 根据id获取一条数据
     *
     * @param id
     * @return
     */
    Product get(Integer id);
    Product getbyId(Integer id);

    /**
     * 根据category_id返回所有对应的Product数据
     *
     * @param category_id
     * @return
     */
    List<Product> list(Integer category_id);

    /**
     * 为多个分类填充产品集合
     *
     * @param categories
     */
    void fill(List<Category> categories);

    /**
     * 为一个分类填充产品集合
     *
     * @param category
     */
    void fill(Category category);

    /**
     * 为多个分类填充产品集合
     *
     * @param categories
     */
    void fillByRow(List<Category> categories);

    /**
     * 为产品填充ReviewCount字段
     *
     * @param product
     */
    void setReviewCount(Product product);

    /**
     * 根据keyword返回相应的产品集合
     *
     * @param keyword
     * @return
     */
    List<Product> search(String keyword);

    List<Product> selectList(String keyword);
}
